Daten visualisieren

Es ist äusserst Zentral, Daten regelmässig und oft zu visualisieren. Die de facto standart Library hierfür in Python ist matplotlib. Diese Library kann man direkt ansteuern wie in diesem Tutorial beschrieben wird. Wir verwenden die library jedoch etwas anders: Dabei nutzen wir die Tatsache aus, dass sowohl pandas wie auch geopandas eingebaute Methoden (methods) haben um deren Inhalte zu visualisieren. Die Methode heisst in beiden Fällen .plot(), wie wir weiter unten noch sehen werden.

Histogramm aus List

pandas vereinfacht das Visualisieren von Daten sogar soweit, dass es sich jewils lohnt seine Listen, Dictionaries usw. zuerst in eine Series oder DataFrame zu überführen um sie zu visualisieren (wie ich zum Beispiel in Kapitel 27 jeweils gemacht habe).

import random
import pandas as pd

random_gamma = [random.gammavariate(1, 1) for x in range(1000)]

random_gamma = pd.Series(random_gamma)

random_gamma.plot(kind = "hist", bins = 50)
<AxesSubplot:ylabel='Frequency'>

Weitere Beispiele zu Histogrammen aus Listen findet ihr im Kapitel Kapitel 27 .

Boxplot aus List

Das Visualisieren als Boxplot ist sehr ähnlich, man ersetzt "hist" lediglich durch "box. Eine komplette liste der möglichen Argumente für findet ihr hier: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.plot.html

random_gamma.plot(kind = "box")
<AxesSubplot:>

Scatterplot aus DataFrame

Um einen Scatterplot zu erstellen, braucht es eine DataFrame (eine Series reicht hierfür nicht aus).

zeckenstiche = pd.read_csv("data/zeckenstiche.csv")
zeckenstiche.plot("x", "y", kind = "scatter")
<AxesSubplot:xlabel='x', ylabel='y'>

Statische Karte aus GeoDataFrame

Um aus GeoDataFrames Karten zu machen verwendet man ebenfalls die .plot() Methode. Um wirklich schöne Karten mit Python herzustellen braucht man viel Übung. Für eine schnelle Visualisierung reicht aber die .plot() Methode.

import geopandas as gpd

zeckenstiche = gpd.read_file("data/zeckenstiche.gpkg")
wald = gpd.read_file("data/wald.gpkg")

Einfache Plots ohne anpassung:

wald.plot()
<AxesSubplot:>

Anpassung der Plot Grösse:

wald.plot(figsize = (5,5))
<AxesSubplot:>

Choroplethenkarte Karte

from matplotlib.colors import ListedColormap

my_cmap = ListedColormap(["green","lightgrey"])
wald.plot(column = "Wald_text", legend = True, cmap = my_cmap)
<AxesSubplot:>

Mehrere Layers:

base = wald.plot(column = "Wald_text", legend = True, cmap = my_cmap)
zeckenstiche.plot(color = "Red", ax = base)
<AxesSubplot:>

Interaktive Karten aus GeoDataFrame

Weitere Informationen dazu findet ihr hier: https://geopandas.org/docs/user_guide/interactive_mapping.html

Vollautomatisch, ohne Anpassungen:

zeckenstiche.explore()

Zeckenstiche Rot eingefärbt:

zeckenstiche.explore(color = "red")

Zeckenstiche nach "accuracy" eingefärbt:

zeckenstiche.explore(column = "accuracy")

Wald nach "Wald_text" eingefärbt (beachte, dass ich my_cmap weiter oben erstellt habe!):

wald.explore(column = "Wald_text", cmap = my_cmap)

Zwei übereinander gelagerte Layers:

base = wald.explore(column = "Wald_text", cmap = my_cmap)
zeckenstiche.explore(m = base, color = "red")
Make this Notebook Trusted to load map: File -> Trust Notebook